﻿/**	@file		lxio_file.h
 *	@date		(2010-11-27 12:12:06)/(2010-12-23 22:12:14)
 *-----------------------------------------------------------------------------
 *	@version	1.0.3.4
 *	@author		Nick Shallery	(nicknide@gmail.com)
 *	@copyright	YOU HAVE ALL LEFT WITH THIS CODE WHILE YOU KEEP COMMENT IN EVERY COPY.
 *-----------------------------------------------------------------------------
**/

#if			!defined(__LOLIX__LXIO__LXIO_FILE__H__NICK__K_IN_G__)
#define		__LOLIX__LXIO__LXIO_FILE__H__NICK__K_IN_G__
//==============================================================================
//--------------------------------------------------------------------------

#if			!defined(__LOLIX__LOLI__FILE__H__K_IN_G__)
	#include	"../lolix/loli/file.h"
#endif	//	!defined(__LOLIX__LOLI__FILE__H__K_IN_G__)

namespace lxio
{
	class disk_tree;
	class physical_tree;
	class physical_directory_factory;
}


class LOLIX_NO_VTABLE lxio::disk_tree
	: public lolix::loli::file_tree
{
public:
	LOLIX_DECLARE_ITF(lxio::disk_tree, lolix::loli::file_tree, (0xd1cdc3e9, 0x36e1420a, 0xac2f61b0, 0xbaafd342));
};


class LOLIX_NO_VTABLE lxio::physical_tree
	: public lolix::loli::file_tree
{
public:
	LOLIX_DECLARE_ITF(lxio::physical_tree, lolix::loli::file_tree, (0x5ec0ca44, 0x65744844, 0x911b519a, 0x8a8116a1));

	//===========================================================================
	//	得到系统对应的真实物理路径
	//---------------------------------------------------------------------------
	//	@out_ptr	[ o] :	返回的物理路径
	//	@buf_size	[io] :	in) 缓冲区长度 out)返回路径的长度
	//---------------------------------------------------------------------------
	//	!!	返回的路径不带 '/' 或者 '\\' 结尾
	//===========================================================================
	LOLIX_INTERFACE(sys_path	, lolix::LOLIX_RETNV	, (lolix::lx_wchar* out_ptr, size_type* buf_size));
};


class LOLIX_NO_VTABLE lxio::physical_directory_factory
	: public lolix::itf
{
public:
	LOLIX_DECLARE_ITF(lxio::physical_directory_factory, lolix::itf, (0x0267fdc7, 0x279649e7, 0x8d80901b, 0xaf47c2df));
	LOLIX_INTERFACE(create_inst	, lolix::LOLIX_RETNV	, (lolix::loli::file_tree** out_ptr, wchar_t const* file_path, size_type file_size)const);
};



//--------------------------------------------------------------------------
//==============================================================================
#endif	//	!defined(__LOLIX__LXIO__LXIO_FILE__H__NICK__K_IN_G__)
